from django.shortcuts import render
from app01.utils.bootstrap import BootStrapModelForm
from app01 import models
from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse
from datetime import datetime
import random
from app01.utils.pagination import Pagination


class OrderModelForm(BootStrapModelForm):
    class Meta:
        model = models.Order
        exclude = ['oid', 'admin']


def order_list(request):
    """ 订单列表 """
    queryset = models.Order.objects.all().order_by('-id')
    form = OrderModelForm()
    page_object = Pagination(request, queryset)
    context = {
        'form': form,
        "queryset": page_object.page_queryset,
        "page_string": page_object.html()

    }
    return render(request, 'order_list.html', context)


@csrf_exempt
def order_add(request):
    """ 添加订单号(ajax) """
    form = OrderModelForm(data=request.POST)
    if form.is_valid():
        # 创建订单号
        form.instance.oid = datetime.now().strftime("%Y%m%d%H%M%S") + str(random.randint(1000,9999))
        # 管理员ID
        form.instance.admin_id = request.session['info']['id']
        form.save()
        return JsonResponse({"status": True})

    return JsonResponse({'status': False, 'error': form.errors})


def order_delete(request):
    uid = request.GET.get('uid')
    print(uid)
    exists = models.Order.objects.filter(id=uid).exists()
    if not exists:
        return JsonResponse({"status": False, 'error': "数据不存在"})

    models.Order.objects.filter(id=uid).delete()
    return JsonResponse({"status": True})


def order_detail(request):
    """ 根据ID获取订单详细 """
    # uid = request.GET.get("uid")
    #
    # row_object = models.Order.objects.filter(id=uid).first()
    # if not row_object:
    #     return JsonResponse({"status": False, 'error': "数据不存在"})
    # # 从数据库中获取到一个对象, row_object
    # result = {
    #     "status":True,
    #     "data":{
    #         "title": row_object.title,
    #         "price": row_object.price,
    #         "status": row_object.status,
    #     }
    # }
    # return JsonResponse(result)

    uid = request.GET.get("uid")

    row_dict = models.Order.objects.filter(id=uid).values('title','price','status').first()

    if not row_dict:
        return JsonResponse({"status": False, 'error': "数据不存在"})
    # 从数据库中获取到一个对象, row_object
    result = {
        "status": True,
        "data": row_dict
    }
    return JsonResponse(result)


@csrf_exempt
def order_edit(request):
    """ 编辑订单 """
    uid = request.GET.get("uid")
    print(uid)
    row_object = models.Order.objects.filter(id=uid).first()
    if not row_object:
        return JsonResponse({"status": False, 'tips': "编辑失败,数据不存在"})

    form = OrderModelForm(data=request.POST, instance=row_object)
    if form.is_valid():
        form.save()
        return JsonResponse({"status": True})

    return JsonResponse({"status": False, 'error': form.errors})